#include <iostream>
#include <vector>
using namespace std;
const int N = 5000;
int l;

// 这才是高精度的板子，比之前的更加精细一些
vector<int> mul(vector<int>& x, vector<int>& y) {
    int n = x.size(), m = y.size();
    vector<int> ans(m + n + 10, 0); // 这里修改很好
    l = n + m;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            ans[i + j] += x[i] * y[j]; 
            ans[i + j + 1] += ans[i + j] / 10;
            ans[i + j] = ans[i + j] % 10;
        }
    }
    while (ans.size() > 1 && ans.back() == 0) ans.pop_back(); // 这里的修改很好
    return ans;
}
void slove(int n, int a) {
    int ret = 0;
    vector<int> res = {1};
    for(int i = 1; i <= n; i++) {
        vector<int> temp;
        int t = i;
        while(t) {
            temp.push_back(t % 10);
            t /= 10;
        }
        res = mul(temp, res);
    }
    for(int i = res.size() - 1; i >= 0; i--) {
        if(res[i] == a) {
            ret++;
        }
    }
    cout << ret << endl;
}
int main() {
    int t;
    cin >> t;
    while(t--) {
        int n, a;
        cin >> n >> a;
        slove(n, a);
    }
    return 0;
}